<h1>JSON、XML、JSONP</h1>

<p>beego 当初设计的时候就考虑了 API 功能的设计，而我们在设计 API 的时候经常是输出 JSON 或者 XML 数据，那么 beego 提供了这样的方式直接输出：</p>

<p>注意 struct 属性应该 为 exported Identifier<br />
    首字母应该大写</p>

<ul>
    <li><p>JSON 数据直接输出：</p>

        <pre lang="go"><code>func (this *AddController) Get() {
    mystruct := { ... }
    this.Data[&quot;json&quot;] = &amp;mystruct
    this.ServeJSON()
}
</code></pre>

        <p>调用 ServeJSON 之后，会设置 <code>content-type</code> 为 <code>application/json</code>，然后同时把数据进行 JSON 序列化输出。</p></li>

    <li><p>XML 数据直接输出：</p>

        <pre lang="go"><code>func (this *AddController) Get() {
    mystruct := { ... }
    this.Data[&quot;xml&quot;]=&amp;mystruct
    this.ServeXML()
}
</code></pre>

        <p>调用 ServeXML 之后，会设置 <code>content-type</code> 为 <code>application/xml</code>，同时数据会进行 XML 序列化输出。</p></li>

    <li><p>jsonp 调用</p>

        <pre lang="go"><code>func (this *AddController) Get() {
    mystruct := { ... }
    this.Data[&quot;jsonp&quot;] = &amp;mystruct
    this.ServeJSONP()
}
</code></pre>

        <p>调用 ServeJSONP 之后，会设置 <code>content-type</code> 为 <code>application/javascript</code>，然后同时把数据进行 JSON 序列化，然后根据请求的 callback 参数设置 jsonp 输出。</p></li>
</ul>

<p>开发模式下序列化后输出的是格式化易阅读的 JSON 或 XML 字符串；在生产模式下序列化后输出的是压缩的字符串。</p>
